import type {
  AccountRunInfoForm,
  AccountRunInfoQuery,
  AccountRunInfoVO,
} from './model';

import type { ID, IDS, PageResult } from '#/api/common';

import { commonExport } from '#/api/helper';
import { requestClient } from '#/api/request';

/**
 * 查询账号管理列表
 * @param params
 * @returns 账号管理列表
 */
export function accountRunInfoList(params?: AccountRunInfoQuery) {
  return requestClient.get<PageResult<AccountRunInfoVO>>(
    '/system/account/list',
    { params },
  );
}

/**
 * 导出账号管理列表
 * @param params
 * @returns 账号管理列表
 */
export function accountRunInfoExport(params?: AccountRunInfoQuery) {
  return commonExport('/aisys/accountRunInfo/export', params ?? {});
}

/**
 * 查询账号管理详情
 * @param id id
 * @returns 账号管理详情
 */
export function accountRunInfoInfo(id: ID) {
  return requestClient.get<AccountRunInfoVO>(`/system/account/${id}`);
}

/**
 * 新增账号管理
 * @param data
 * @returns void
 */
export function accountRunInfoAdd(data: AccountRunInfoForm) {
  return requestClient.postWithMsg<void>('/system/account', data);
}

/**
 * 更新账号管理
 * @param data
 * @returns void
 */
export function accountRunInfoUpdate(data: AccountRunInfoForm) {
  return requestClient.putWithMsg<void>('/system/account', data);
}

/**
 * 删除账号管理
 * @param id id
 * @returns void
 */
export function accountRunInfoRemove(id: ID | IDS) {
  return requestClient.deleteWithMsg<void>(`/system/account/${id}`);
}

/**
 * 登录账号
 * @param id 账号ID
 * @returns 登录结果
 */
export function loginAccount(id: ID) {
  return requestClient.get<void>(`/system/account/login/${id}`, {
    timeout: 1000 * 60 * 10,
  });
}

/**
 * 查询账号列表（带搜索）
 * @param query 查询参数
 * @returns 账号列表
 */
export function listSearch(query: AccountRunInfoQuery) {
  return requestClient.get<PageResult<AccountRunInfoVO>>('/system/account/list/search', {
    params: query,
  });
}

/**
 * 发布备注
 * @param data 备注数据
 * @returns 发布结果
 */
export function reNotes(data: any) {
  return requestClient.postWithMsg<void>('/system/account/re/note', data);
}

// 查询数字员工管理列表
export function listEmployee() {
  return requestClient.get<Object>('/system/employee/list');
}
